Streaming data, as the term is used herein, refers to a particular approach to providing content stored on a server (such as a web server) to a client (such as a personal computer) over a network connection. Streaming data is similar, in many respects, to downloading data in the traditional sense. In a traditional download, an entire file is usually downloaded before the file can be accessed. Streaming data, however, can be accessed as the data is received. For instance, rather than spending several minutes or hours to download a broadcast news segment over the Internet before viewing the news segment, the news segment can be streamed to a client and the client can decode and play the news segment in real time as the data is received.
Streaming data is more than just a progressive download though. A progressive download may begin playing a file before the entire file is downloaded, but the rate at which the file is played (the consumption rate) is not managed with respect to the rate at which the file is downloaded (the data rate). That is, in a progressive download, if the rate at which the data is received exceeds the rate at which the data is played, enough memory must be available to buffer the accumulated data. Conversely, if the rate at which the data is received is less than the rate at which the data is played, the presentation may have breaks or pauses while waiting for more data to arrive. For streaming data, however, the consumption rate is managed with respect to the data rate to reduce or eliminate breaks or pauses in a presentation, and to maintain the amount of buffered data within certain parameters.
Streaming data has countless applications and promises to revolutionize entire industries. For instance, movies and television programming can be stored on a server and made available over the Internet for clients to access at their discretion and in real time. There is no need for a client to adhere to a broadcast schedule, nor does a client have to wait long periods of time to download content before playing.
Of course, processing streaming data in real time can be more resource intensive than traditional downloading or progressive downloading. Many personal computers (PCs) these days are more than capable of handling streaming data. For instance, a typical PC system may include a cable modem or digital subscriber line (DSL), a processor speed of 300 Mega hertz per second or better, and free hard disk space on the order of hundreds of Mega bytes. With plentiful resources like these, a system will usually be able to handle most streaming data with little or no pauses in the presentation and with plenty of memory available to buffer accumulated data. In other words, managing the consumption rate compared to the data rate does not have to be very precise when using a system with plentiful resources.
Not all systems, however, have plentiful resources. For instance, portable wireless devices and special purpose devices often have comparatively limited resources. Memory space on a cellular phone, personal data assistant (PDA), or mobile email device, for example, may be on the order of 2 megabytes compared to hundreds of megabytes on a PC. Similarly, a set-top box or cable box may have relatively little memory compared to the data rate available over DSL or cable modem. Resource restrictions on devices such as these can be particularly problematic when it comes to managing streaming data, but these devices make up a huge and ever growing segment of the market for streaming data.